00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 if ( !defined("PATH_TO_ROOT") ) {
00026 define( "PATH_TO_ROOT", "../../" );
00027 }
00028
00037 require_once (PATH_TO_ROOT."common/classes/class.output.inc.php");
00038 require_once (PATH_TO_ROOT."common/classes/class.email.inc.php");
00040 require_once (PATH_TO_ROOT."common/classes/class.dateselection.inc.php");
00042 require_once (PATH_TO_ROOT."common/classes/class.formular.inc.php");
00043 require_once (PATH_TO_ROOT."roleplay/classes/class.roleartefacts.inc.php");
00044 require_once (PATH_TO_ROOT."teams/classes/class.teamartefacts.inc.php");
00046 require_once (PATH_TO_ROOT."suchmaschine/classes/class.spider.inc.php");
00054 class Insert {
00060 private $maxFileSize;
00066 private $forbiddenFileExtensions;
00072 private $role = null;
00078 private $team = null;
00079
00084 public function __construct() {
00085 global $settings;
00086 if (is_numeric($settings['filemanager_max_filesize'])) $this->maxFileSize = $settings['filemanager_max_filesize'];
00087 $this->forbiddenFileExtensions = $settings['filemanager_forbidden_extensions'];
00088 if (isset($_SESSION["roleID"])) {
00089 $this->role = new Role($_SESSION["roleID"]);
00090 }
00091 if (isset($_SESSION["teamID"])) {
00092 $this->team = new Team($_SESSION["teamID"]);
00093 }
00094 }
00100 public function showForm($file_upload = false, $copyFile = null) {
00101 global $db, $EZSQL_ERROR;
00102
00103 $MaxFileSize = $this->maxFileSize;
00104 $ForbiddenFileExtensions = $this->forbiddenFileExtensions;
00105 $time = time();
00106 $sql_add = "";
00107 $heute = getdate();
00108 $course = $_SESSION['course'];
00109 $form = new Formular();
00110
00111
00112 $calendar = new DateSelection($heute['mday'], $heute['mon'], $heute['year'], $heute['hours'], $heute['minutes']);
00113
00114 $calendar->autoUpdate = false;
00115
00116 $calendar->formName = "insert";
00117
00118 $calendar->clearStrings();
00119
00120
00121 if(isset($_GET['url'])) {
00122 $actionChecked = 'link';
00123 $linkUrl = $_GET['url'];
00124 }
00125 else {
00126 $linkUrl = '';
00127 $actionChecked = '';
00128 }
00129
00130
00131 if(isset($_GET['name']))
00132 $linkName = $_GET['name'];
00133 else
00134 $linkName = '';
00135
00136
00137
00138 $form->setFormHead("insert", "", "post", "multipart/form-data", "onsubmit=\"".(!$file_upload ? "if (document.getElementById('link_ID').checked == false && document.getElementById('folder_ID').checked == false".(($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) ? " && document.getElementById('ROOT_ID').checked == false" : "") .") { alert('Bitte wählen Sie, ob Sie einen Link oder Ordner erstellen wollen!'); return false; } ":
00139 "") ."if (document.getElementById('folder').value == ''".(!$file_upload && (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) ? " && document.getElementById('ROOT_ID').checked == false" : "") .") { alert('Bitte wählen Sie einen Zielordner!'); return false; }\"");
00140 $form->setTemplate("<table width='100%'>", "<tr valign='top'><td class='tableCell' width='50%'>", "<td class='tableCell' width='50%'>");
00141 $form->setButtons(1, "Abschicken");
00142 if (isset($this->role)) {
00143 $form->addRawCode("<tr><td class='message' colspan='2'>Sie nehmen zur Zeit die Rolle <strong>".Data::toHTML($this->role->getName($_SESSION["gender"]), false) ."</strong> ein.<br />Wenn Sie ".($file_upload ? "eine Datei hochladen, wird diese" : "einen Ordner oder Link erstellen, wird dieser") ." unter Ihrem Rollennamen veröffentlicht.</td></tr>");
00144 }
00145
00146 $form->addRawCode("<tr><td class='tableHead' colspan='2'>Benötigte Einstellungen</td></tr>");
00147
00148 if ($file_upload) {
00149 $form->addInput("hidden", "type", "", 1, "file");
00150 $form->addInput("hidden", "MAX_FILE_SIZE", "", 1, $MaxFileSize*1024*1024);
00151
00152
00153 $form->addRawCode("</table><div id='uploads'><table width='100%'><tr valign='top'>
00154 <td class='tableHead' colspan='2'><div style='text-align:center;'>Dateiinformationen für 1. Datei</div></td></tr>");
00155
00156 $name = (!is_null($copyFile)) ? $copyFile->getName() : "";
00157 $form->addInput("text", "name[]", "Bitte geben Sie einen aussagekräftigen Namen für die Datei ein:<br/><span class='text10'>(max. 40 Zeichen)</span>", 50, $name, 40);
00158
00159 if ( !is_null( $copyFile ) ) {
00160 $form->addInput("hidden", "copyFile", "", 1, $copyFile->getID());
00161 $form->addRawCode("<tr><td>Datei kopieren</td><td>".$copyFile->getOrigFileName()."</td></tr>");
00162 } else {
00163 $string = "Bitte wählen Sie eine Datei aus:<br/>";
00164 $string.= "<span class='text10'>";
00165 if ($MaxFileSize) $string.= "max. ".$MaxFileSize." MB";
00166 if ($MaxFileSize && $ForbiddenFileExtensions) $string.= ", ";
00167 if ($ForbiddenFileExtensions) {
00168 $string.= "keine ";
00169 if (is_array($ForbiddenFileExtensions)) {
00170 foreach($ForbiddenFileExtensions as $value) $string.= ".".$value." ";
00171 } else $string.= ".".$ForbiddenFileExtensions." Dateien";
00172 }
00173 $string.= "</span>";
00174 $form->addInput("file", "userfile[]", $string, 34);
00175
00176 $form->addTextArea("comment[]", "Datei-Beschreibung (optional)", 40, 3, "");
00177
00178
00179 $form->addRawCode("</table></div><table width='100%'><tr valign='top'><td class='tableCell' colspan='2'>
00180 <p style='text-align:right;'>
00181 <script>document.write(\"<a href='#' onclick='one_more_upload(); return false;'>Mehr Dateien Uploaden</a>\");</script>
00182 </p>
00183 </td></tr>");
00184 }
00185 } else {
00186 $folderJS = (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) ? "document.getElementById('student_write').disabled=false;" : "") ."document.getElementById('userfileLink').style.display='none';"."document.getElementById('userfileFolder').style.display='inline';"."document.getElementById('nameLink').style.display='none';"."document.getElementById('nameFolder').style.display='inline';";
00187 $radio = array(array("Link hinzufügen", "link", "onclick=\"".(($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) ? "document.getElementById('student_write').disabled=true;" : "") ."document.getElementById('userfileLink').style.display='inline';"."document.getElementById('userfileFolder').style.display='none';"."document.getElementById('nameLink').style.display='inline';"."document.getElementById('nameFolder').style.display='none';"."document.getElementById('folder').disabled=false\""), array("Ordner erstellen", "folder", "onclick=\"$folderJS"."document.getElementById('folder').disabled=false\""));
00188
00189 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) {
00190 $radio[] = array("Hauptordner erstellen", "ROOT", "onclick=\"$folderJS"."document.getElementById('folder').disabled=true\"");
00191 }
00192
00193 $form->addRadio("type", $radio, "Aktion wählen:" . (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) ? "" : "<br/><span class='text10'>(Hauptordner sind Ordner auf oberster Ebene)</span>"), $actionChecked);
00194
00195 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) {
00196 $form->addToNextTag("id='student_write'");
00197 $form->addInput("checkbox", "student_write", "<strong>Nur für Ordner: </strong> Schreibberechtigung für Studenten");
00198 }
00199
00200 $form->addInput("text", "userfile", "<span id='userfileLink'><strong>Link: </strong>Bitte geben Sie eine URL ein.<br/></span><span id='userfileFolder'><strong>Ordner: </strong>Bitte geben Sie einen Ordnernamen ein.<br/><span class='text10'>(OrdnerName => max. 20 Zeichen)</span></span>", 41, $linkUrl);
00201 $form->addInput("text", "name", "<span id='nameLink'><strong>Link: </strong>Bitte geben Sie einen Namen für den Link an.<br/></span><span id='nameFolder'><strong>Ordner: </strong>Bitte geben Sie einen erläuternden Namen (Tooltip) für den Ordner an.<br/></span><span class='text10'>(max. 40 Zeichen)</span>", 41, $linkName, 40);
00202 }
00203
00204
00205 if (($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST) || isset($_SESSION["assistent"])) $sql_add = "AND (userID='".$_SESSION['userid']."' OR (visible_type='1' AND start_time<'$time' AND end_time>'$time' AND student_write=1) )";
00206 elseif ($_SESSION['usergroup'] == SEKRETARIAT) $sql_add = "AND (userID='".$_SESSION['userid']."' OR visible_type<=2)";
00207
00208
00209 $folderArr = NULL;
00210 $this->printSubFolder(0, $sql_add, $folderArr, 0, "");
00211 $selectedFolder = "";
00212 if (isset($_SERVER["HTTP_REFERER"])) {
00213 if (preg_match("/activeFolder=([0-9]+)/", $_SERVER["HTTP_REFERER"], $selectedFolder)) {
00214 $selectedFolder = $selectedFolder[1];
00215 }
00216 }
00217 if (!is_array($folderArr)) {
00218 echo "<table>";
00219 if ($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST) Output::errorMessage("Sorry, der Dozent oder Admin hat noch keine Ordner angelegt, deshalb können Sie derzeit keine Dateien hochladen.", 1);
00220 else Output::errorMessage("Sie müssen erst einen Hauptordner anlegen, bevor Studenten etwas hochladen können!", 1);
00221 echo "</table>";
00222 $form->addLine(" ", "Noch keine Ordner angelegt.<br/>Es ist nicht möglich etwas zu Erstellen oder Hochzuladen.");
00223 } else {
00224 $form->addToNextTag("style='width:300;' id='folder'");
00225 $form->addSelect("folder", "Bitte geben Sie den Zielordner an".(($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST) ? "" : "<br/><span class='text10'>(ist ohne Bedeutung, wenn Sie einen Hauptordner anlegen.)</span>"), $folderArr, count($folderArr) > 10 ? 10 : count($folderArr), false, $selectedFolder);
00226 }
00227 if (!$file_upload) {
00228 $description = (!is_null($copyFile)) ? $copyFile->getDescription() : "";
00229 $form->addTextArea("comment", "Datei-Beschreibung (optional)", 40, 3, $description);
00230 }
00231 $visibleArr = array(array("Alle", "1"), array("Dozenten und Tutoren", "2"), array("Dozenten", "3"));
00232 $form->addSelect("visible", "Wählen Sie hier die Benutzergruppe aus, die Ihren Eintrag sehen darf:", $visibleArr);
00233 $form->addButtons();
00234 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) || (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) && $course > 0)) {
00235
00236 $form->addRawCode("<tr><td class='tableHead' colspan='2'>Optionale Einstellungen</td></tr>");
00237
00238 if ($course == 0) $names = $db->get_results("SELECT ID, Vorname, Nachname FROM user WHERE Usergroup > 1 AND Invisible = 0 AND ID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00239 else $names = $db->get_results("SELECT ID, Vorname, Nachname, user_course.courseID FROM user, user_course WHERE user.ID=user_course.userID AND user_course.courseID='$course' AND Usergroup > 1 AND userID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00240
00241 $COUNT = 0;
00242 if (is_array($names)) foreach($names as $name) {
00243 $visibleListArr[$COUNT][0] = Data::toHTML($name->Nachname.", ".$name->Vorname, false);
00244 $visibleListArr[$COUNT++][1] = $name->ID;
00245 }
00246 if (!empty($visibleListArr)) $form->addSelect("visibleList", "Hier können Sie zusätzliche Personen auswählen, die Ihren Eintrag sehen dürfen:<br/>(Für Mehrfachselektierung STRG-Taste beim Klicken gedrückt halten.)<br/><strong>(wird ignoriert, wenn als Benutzergruppe "Alle" ausgewählt ist!)</strong>", $visibleListArr, 10, true);
00247 }
00248 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) {
00249 $form->addMarker();
00250
00251 $form->addInput("checkbox", "email", "Benachrichtigung an alle <strong>Mitglieder</strong> per Email?", 0, 1);
00252 $form->addInput("checkbox", "teacherEMail", "Benachrichtigung an alle <strong>Dozenten</strong> per Email?", 0, 1);
00253 $form->addButtons();
00254 echo $form->getForm(0);
00255
00256
00257 ?>
00258 <tr>
00259 <td class='tableCell'>Für welche Zeit sichtbar?<br/><span class='text10'>(wenn Sie nichts auswählen ist der Eintrag immer sichtbar)</span></td>
00260 <td class='tableCell'>Anzeigebeginn Datum/Zeit:<br/>
00261 <?php
00262
00263 if (isset($_POST['openDate_day'])) {
00264 $calendar->setDate($_POST['openDate_day'], $_POST['openDate_month'], $_POST['openDate_year']);
00265 $calendar->setTime($_POST['openDate_hour'], $_POST['openDate_minute']);
00266 }
00267
00268 $calendar->printCalender("openDate", "dateExt");
00269 $calendar->printCalender("openDate", "time");
00270 ?>
00271 <br/><br/>Anzeigeende Datum/Zeit:<br/>
00272 <?php
00273
00274 if (isset($_POST['closeDate_day'])) {
00275 $calendar->setDate($_POST['closeDate_day'], $_POST['closeDate_month'], $_POST['closeDate_year']);
00276 $calendar->setTime($_POST['closeDate_hour'], $_POST['closeDate_minute']);
00277 }
00278 $calendar->printCalender("closeDate", "dateExt");
00279 $calendar->printCalender("closeDate", "time");
00280 echo " </td>\n</tr>\n";
00281
00282 echo $form->getForm(1);
00283 } else {
00284 echo $form->getForm();
00285 }
00286 }
00297 public function printSubFolder($fileID, $sql_add, &$folderArr, $COUNT = 0, $layer = "··") {
00298 global $db;
00299 $folders = $db->get_results("SELECT fileID, link, student_write, userID FROM filelist WHERE parent_object='".$fileID."' AND courseID=".$_SESSION['course']." AND type='folder' $sql_add ORDER BY name");
00300 if ($folders) foreach($folders as $folder) {
00301 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false);
00302 $folderArr[$COUNT++][1] = $folder->fileID;
00303 $COUNT = $this->printSubFolder($folder->fileID, $sql_add, $folderArr, $COUNT, $layer."··");
00304 }
00305 return $COUNT;
00306 }
00313 public function fileSizeOK($size) {
00314 if ($this->maxFileSize) {
00315 if (($size/1000000) > $this->maxFileSize) return false;
00316 if ($size <= 0) return false;
00317 }
00318 return true;
00319 }
00326 public function fileExtOK($name) {
00327 if ($this->forbiddenFileExtensions) {
00328 $pos = strrpos($name, ".");
00329 if ($pos) {
00330 $ext = substr($name, $pos+1);
00331 if (is_array($this->forbiddenFileExtensions)) {
00332 foreach($this->forbiddenFileExtensions as $value) {
00333 if (strtolower($ext) == strtolower($value)) return false;
00334 }
00335 } elseif (strtolower($ext) == strtolower($this->forbiddenFileExtensions)) return false;
00336 }
00337 }
00338 return true;
00339 }
00347 public function sendEmail($fileID, $toTeachers = false) {
00348 global $db, $settings;
00349 if (!is_numeric($fileID)) return false;
00350 $file = $db->get_row("SELECT * FROM filelist WHERE fileID='$fileID'");
00351 if ($file) {
00352 $email = new Email($_SESSION['userid']);
00353 if ($toTeachers) {
00354 if ($file->courseID == 0) {
00355 $query = "SELECT ID FROM user WHERE Usergroup=3";
00356 } else {
00357 $query = "SELECT ID
00358 FROM user JOIN user_course ON ID=userID
00359 WHERE courseID='".$file->courseID."' AND
00360 ((differentUsergroup=0 AND Usergroup=3) OR differentUsergroup=3)";
00361 }
00362 } else {
00363 if ($file->courseID == 0) {
00364 $query = "SELECT ID FROM user WHERE Invisible=0";
00365 } else {
00366 $query = "SELECT userID FROM user_course WHERE courseID ='".$file->courseID."'";
00367 }
00368 }
00369 $users = $db->get_col($query);
00370 if ($file->courseID > 0) {
00371 $courseName = $db->get_var("SELECT Name FROM courses WHERE ID='".$file->courseID."'");
00372 }
00373 $user = $db->get_row("SELECT Vorname, Nachname FROM user WHERE ID='".$file->userID."'");
00374 $subject = $settings["label"].": Neue Ressource im ".(empty($courseName) ? "Foyer" : "Kurs \"$courseName\"");
00375 $message = "Guten Tag,\n\n".$user->Vorname." ".$user->Nachname." hat ".($file->type == "link" ? "einen neuen Link" : ($file->type == "file" ? "eine neue Datei" : "einen neuen Ordner")) ." mit der Bezeichnung\n\n\t".$file->name.(empty($file->description) ? "" : "\n\n\t".$file->description) ."\n\nim ".(empty($courseName) ? "Foyer" : "Kurs \"$courseName\"") ." bereitgestellt".($file->type == "link" ? ":\n\n\t<".$file->link.">" : ".") ."\n\nViele Grüße,\n\nIhr Kursdozent";
00376 return $email->sendMessageToUser($subject, $users, $message);
00377 }
00378 return false;
00379 }
00386 public function resolveForm($data) {
00387 global $db, $EZSQL_ERROR;
00388 echo "<table>";
00389
00390 if (!in_array($data["type"], array("folder", "link", "file", "ROOT"))) {
00391 $ERROR = "Bitte wählen Sie aus, ob Sie einen Link oder einen Ordner erstellen wollen.";
00392 Output::errorMessage($ERROR, 2);
00393 echo "</table>";
00394 return false;
00395 }
00396 if ($data['link'] == "") {
00397 switch ($data['type']) {
00398 case 'ROOT':
00399 case 'folder':
00400 $ERROR = "Sie haben keinen Ordnernamen angegeben!";
00401 break;
00402
00403 case 'link':
00404 $ERROR = "Sie haben keinen Link angegeben!";
00405 break;
00406
00407 case 'file':
00408 $ERROR = "Sie haben keine Datei ausgewählt!";
00409 break;
00410 }
00411 Output::errorMessage($ERROR, 2);
00412 }
00413 if ($data['name'] == "") {
00414 switch ($data['type']) {
00415 case 'ROOT':
00416 case 'folder':
00417 $ERROR = "Sie haben keinen erläuternden Ordnernamen (Tooltip) angegeben!";
00418 break;
00419
00420 case 'link':
00421 $ERROR = "Sie haben keinen Namen für den Link angegeben!";
00422 break;
00423
00424 case 'file':
00425 $ERROR = "Sie haben keinen Namen für die Datei angegeben!";
00426 break;
00427 }
00428 if (!empty($ERROR)) Output::errorMessage($ERROR, 2);
00429 }
00430 if ($data['parent_object'] == "" && $data['type'] != 'ROOT') {
00431 $ERROR = "Sie haben keinen Zielordner ausgewählt!";
00432 Output::errorMessage($ERROR, 2);
00433 }
00434 if ($data['type'] == 'link') {
00435 if (!Utilities::validateURL($data['link'])) {
00436 $ERROR = "Sie haben eine ungültige URL angegeben!";
00437 Output::errorMessage($ERROR, 2);
00438 }
00439 if (strlen($data['name']) > 40) {
00440 $ERROR = "Linkname darf höchstens 40 Zeichen lang sein.";
00441 Output::errorMessage($ERROR, 2);
00442 }
00443 }
00444 if ($data['type'] == 'file') {
00445 if ($data['orig_filename'] == '' || strlen($data['extension']) > 5 || strlen($data['extension']) < 0) {
00446 $ERROR = "Keine Datei ausgewählt oder Dateiendung ungültig! (Länge hinter . 1-4)";
00447 Output::errorMessage($ERROR, 2);
00448 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']);
00449 } elseif (!($this->fileSizeOK($data['size']))) {
00450 $ERROR = "Datei ist entweder über der zulässigen Größe, oder sie ist leer!";
00451 Output::errorMessage($ERROR, 2);
00452 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']);
00453 } elseif (!($this->fileExtOK($data['orig_filename']))) {
00454 $ERROR = "Dateityp ist nicht erlaubt!";
00455 Output::errorMessage($ERROR, 2);
00456 if ($data['tmpfileTmpName'] != '') unlink($data['tmpfileTmpName']);
00457 }
00458 }
00459 if ($data['type'] == 'folder') {
00460 if (strlen($data['link']) > 20) {
00461 $ERROR = "Ordnername darf höchstens 20 Zeichen lang sein.";
00462 Output::errorMessage($ERROR, 2);
00463 }
00464 }
00465
00466 if (isset($ERROR)) {
00467 echo "</table>";
00468 return false;
00469 }
00470
00471 switch ($data['type']) {
00472 case 'ROOT':
00473 $data['type'] = 'folder';
00474 $data['parent_object'] = 0;
00475 $type = "von Hauptordner";
00476 break;
00477
00478 case 'folder':
00479 $type = "von Ordner";
00480 break;
00481
00482 case 'link':
00483 $type = "von Link";
00484 break;
00485
00486 case 'file':
00487 $type = "von Datei";
00488 break;
00489 }
00490
00491
00492 $SQL_keys = $SQL_values = '';
00493 foreach($data as $key => $value) {
00494 if (!strstr($key, "tmp")) {
00495 $SQL_keys.= $key.',';
00496 $SQL_values.= "'".Data::toMysql($value) ."',";
00497 }
00498 }
00499
00500 if ($data['type'] == 'folder' && ($db->get_var("SELECT fileID FROM filelist WHERE parent_object='".$data['parent_object']."' AND courseID =".$data['courseID']." AND link='".$data['link']."' LIMIT 1") != "")) {
00501 Output::errorMessage("Ein Ordner mit dem selben Namen existiert schon in diesem Ordner.<br/>Wählen Sie bitte einen anderen Namen.", 2);
00502 echo "</table>";
00503 return false;
00504 }
00505
00506 if ($data['type'] == 'link' && $db->get_var("SELECT fileID FROM filelist WHERE parent_object='".$data['parent_object']."' AND courseID=".$_SESSION['course']." AND link='".$data['link']."' LIMIT 1") != "") {
00507 Output::errorMessage("Ein Link mit dem selben Namen existiert bereits in diesem Ordner!", 2);
00508 echo "</table>";
00509 return false;
00510 }
00511 $SQL = "INSERT INTO filelist (".substr($SQL_keys, 0, -1) .") VALUES (".substr($SQL_values, 0, -1) .")";
00512 $errorCount = count($EZSQL_ERROR);
00513 $db->query($SQL);
00514 $data['fileID'] = $db->insert_id;
00515 if (count($EZSQL_ERROR) > $errorCount || $data['fileID'] < 0) {
00516 Output::errorMessage("Fehler beim Anlegen ".$type." in der Datenbank!");
00517 echo "</table>";
00518 return false;
00519 } elseif ($data['type'] == 'file') {
00520 if (!$this->uploadFile($data)) {
00521 $db->query("DELETE FROM filelist WHERE fileID='${data['fileID']}'");
00522 $data['fileID'] = "";
00523 Output::errorMessage("Aktion nicht erfolgreich durchgeführt!", 2);
00524 echo "</table>";
00525 return false;
00526 }
00527 }
00528 if (isset($this->role)) {
00529 RoleArtefacts::setRoleForItem(RESSOURCE, $data["fileID"], $_SESSION["roleID"]);
00530 }
00531 if (isset($this->team)) {
00532 TeamArtefacts::setTeamForItem(RESSOURCE, $data["fileID"], $_SESSION["teamID"]);
00533 }
00534 if ($data['fileID'] && $data['visible_type'] != 1 && isset($data['tmpfileVisibleList'])) {
00535
00536 $errorCount = count($EZSQL_ERROR);
00537 foreach($data['tmpfileVisibleList'] as $value) {
00538 $db->query("INSERT INTO filevisible (fileID,userID) VALUES(".$data['fileID'].",".$value.")");
00539 }
00540 if (count($EZSQL_ERROR) > $errorCount) {
00541 Output::errorMessage("Aktion nicht erfolgreich durchgeführt!", 2);
00542 echo "</table>";
00543 return false;
00544 }
00545 }
00546 if ($data['type'] != 'file') {
00547 if ($data['tmpemail'] || $data['tmpteacherEMail']) {
00548 if ($this->sendEmail($data['fileID'], ($data['tmpteacherEMail'] && !$data['tmpemail']))) Output::echoMessage("Benachrichtigungs-Mails versandt.", 2);
00549 else Output::errorMessage("Benachrichtigungs-Mails konnten nicht versandt werden!", 2);
00550 }
00551 }
00552 Output::echoMessage("Aktion wurde erfolgreich durchgeführt!", 2);
00553 echo "</table>";
00554 unset($_POST);
00555 if ($data['type'] == 'file') {
00556
00557 $spider = new Spider();
00558 $spider->start("add-file", $data['fileID']);
00559 }
00560 return $data["fileID"];
00561 }
00569 private function uploadFile($data) {
00570 global $settings;
00571
00572 $uploaddir = PATH_TO_ROOT.$settings["upload_path"].'filemanager/courseID/'.$data['courseID'].'/';
00573
00574 if (!(is_dir($uploaddir))) Utilities::mkdir_r($uploaddir);
00575 $uploadSuccess = false;
00576
00577 if (isset($data['tmpfileTmpName'])) {
00578 $uploadSuccess = move_uploaded_file($data['tmpfileTmpName'], $uploaddir.$data['link']);
00579 } else if (isset($data['tmpPathToFile'])) {
00580 $uploadSuccess = copy( $data['tmpPathToFile'], $uploaddir.$data['link'] );
00581 }
00582 if ( $uploadSuccess ) {
00583 if ($data['tmpemail'] || $data['tmpteacherEMail']) {
00584 if ($this->sendEmail($data['fileID'], ($data['tmpteacherEMail'] && !$data['tmpemail']))) Output::echoMessage("Benachrichtigungs-Mails versandt.", 1);
00585 else Output::errorMessage("Benachrichtigungs-Mails konnten nicht versandt werden!", 1);
00586 }
00587 Output::echoMessage("Datei erfolgreich gesendet", 1);
00588 return true;
00589 } else {
00590 Output::errorMessage("Fehler beim Senden der Datei aufgetreten!", 1);
00591 return false;
00592 }
00593 }
00594 }